package ar.edu.caece.compiler.grammar.attributes;

import java.util.List;

import ar.edu.caece.compiler.grammar.attributes.Attribute.Type;
import ar.edu.caece.compiler.grammar.attributes.tree.NodeStaticUtilities;

public class DeclaracionFuncion extends Declaracion{
	private String nombreFuncion;
	private boolean isProcedimiento;
	private List<DeclaracionParametro> tipoParametros;
	private String labelFuncion;
	
	public DeclaracionFuncion(String nombreFuncion, Type tipo,
			boolean isProcedimiento, List<DeclaracionParametro> parametros,String label) {
		super();
		this.nombreFuncion = nombreFuncion;
		this.tipo = tipo;
		this.isProcedimiento = isProcedimiento;
		this.tipoParametros = parametros;
		this.labelFuncion = label;
	}
	
	public String getNombreFuncion() {
		return nombreFuncion;
	}
	public void setNombreFuncion(String nombreFuncion) {
		this.nombreFuncion = nombreFuncion;
	}
	public Type getTipo() {
		return tipo;
	}
	public void setTipo(Type tipo) {
		this.tipo = tipo;
	}
	public boolean isProcedimiento() {
		return isProcedimiento;
	}
	public void setProcedimiento(boolean isProcedimiento) {
		this.isProcedimiento = isProcedimiento;
	}
	public List<DeclaracionParametro> getTipoParametros() {
		return tipoParametros;
	}
	public void setTipoParametros(List<DeclaracionParametro> tipoParametros) {
		this.tipoParametros = tipoParametros;
	}
	public String getNombreVariable() {
		return nombreFuncion;
	}

	@Override
	public String toString() {
		return "DeclaracionFuncion [isProcedimiento=" + isProcedimiento
				+ ", nombreFuncion=" + nombreFuncion + ", tipoParametros="
				+ tipoParametros + ", nombreVariable=" + nombreVariable
				+ ", tipo=" + tipo + ", label: " + labelFuncion+"]";
	}

	public String getLabelFuncion() {
		return labelFuncion;
	}
	
}
